library(tidyverse)
library(cowplot)
library(maps)
library(ggforce)
library(viridis)
studies <- read_csv("../data/studies_gsheet.csv")
sites <- read_csv("../data/sites_gsheet.csv")
df <- studies %>%
group_by(site) %>%
summarise(Nstudies = n_distinct(studyID)) %>%
left_join(sites)
Joining, by = "site"
world <- map("world", plot = FALSE, fill = TRUE) %>% fortify()

ggsave("map.pdf", width = 20, height = 10, scale = 2)
m <- ggplot(df, aes(x = long, y = lat)) +
geom_polygon(data = world, aes(group = group), fill = "grey90") +
geom_point(aes(size = Nstudies, fill = Nstudies), shape = 21, alpha = .8) +
scale_size_area("Number of\nStudies", max_size = 15) +
scale_fill_viridis_c("Number of\nStudies") +
theme_map() +
guides(size = "none")
legend <- get_legend(m)
Removed 2 rows containing missing values (geom_point).
mx <- m +
annotate("rect", ymin = c(24, 31, 24), ymax = c(46, 61, 50), xmin = c(124, -12, -130),
xmax = c(146, 32, -64), size = .5, col = "grey", fill = NA) +
coord_fixed(1.3, ylim = c(-55, 83.59961)) +
theme(legend.position = "none")
Zoom in on sections
# japan
m1 <- m +
geom_polygon(data = world, aes(group = group), col = "black", fill = "grey90", lwd = .2) +
geom_point(aes(size = Nstudies, fill = Nstudies), shape = 21, alpha = .8) +
coord_fixed(1.3, ylim = c(25, 45), xlim = c(125, 145)) +
theme(legend.position = "none") +
panel_border(color = "grey", size = .5)
# europe
m2 <- m +
geom_polygon(data = world, aes(group = group), col = "black", fill = "grey90", lwd = .2) +
geom_point(aes(size = Nstudies, fill = Nstudies), shape = 21, alpha = .8) +
coord_fixed(1.3, ylim = c(32, 60), xlim = c(-10, 30)) +
theme(legend.position = "none") +
panel_border(color = "grey", size = .5)
# contiguous us
usa = map("state", plot = FALSE, fill = TRUE) %>% fortify() # "usa"
m3 <- m +
geom_polygon(data = world, aes(group = group), col = "black", fill = "grey90", lwd = .2) +
geom_polygon(data = usa, aes(group = group), col = "black", fill = "grey90", lwd = .2) +
geom_point(aes(size = Nstudies, fill = Nstudies), shape = 21, alpha = .8) +
coord_fixed(1.3, ylim = c(25, 49), xlim = c(-127, -67)) +
theme(legend.position = "none") +
panel_border(color = "grey", size = .5)
bottom_row <- plot_grid(m3, m2, m1, legend, nrow = 1, rel_widths = c(2, 1.18, .85, .5))
Removed 2 rows containing missing values (geom_point).Removed 2 rows containing missing values (geom_point).Removed 2 rows containing missing values (geom_point).Removed 2 rows containing missing values (geom_point).Removed 2 rows containing missing values (geom_point).Removed 2 rows containing missing values (geom_point).
plot_grid(mx, bottom_row, ncol = 1, rel_heights = c(2.4, 1)) +
theme(plot.margin = unit(c(.5, .5, 1.5, .5), "cm"))
Removed 2 rows containing missing values (geom_point).

ggsave("map_insets.pdf", width = 8, height = 5.5, scale = 2)
Session Info
sessionInfo()
R version 3.6.1 (2019-07-05)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Mojave 10.14.5
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/3.6/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] viridis_0.5.1 viridisLite_0.3.0 ggforce_0.3.1 maps_3.3.0 cowplot_1.0.0
[6] forcats_0.4.0 stringr_1.4.0 dplyr_0.8.3 purrr_0.3.2 readr_1.3.1
[11] tidyr_1.0.0 tibble_2.1.3 ggplot2_3.2.1 tidyverse_1.2.1
loaded via a namespace (and not attached):
[1] tidyselect_0.2.5 xfun_0.10 haven_2.1.1 lattice_0.20-38 colorspace_1.4-1
[6] vctrs_0.2.0 generics_0.0.2 rlang_0.4.0 pillar_1.4.2 glue_1.3.1
[11] withr_2.1.2 tweenr_1.0.1 modelr_0.1.5 readxl_1.3.1 lifecycle_0.1.0
[16] munsell_0.5.0 gtable_0.3.0 cellranger_1.1.0 rvest_0.3.4 labeling_0.3
[21] knitr_1.25 broom_0.5.2 Rcpp_1.0.2 scales_1.0.0 backports_1.1.5
[26] jsonlite_1.6 farver_1.1.0 gridExtra_2.3 digest_0.6.21 hms_0.5.1
[31] stringi_1.4.3 polyclip_1.10-0 grid_3.6.1 cli_1.1.0 tools_3.6.1
[36] magrittr_1.5 lazyeval_0.2.2 crayon_1.3.4 pkgconfig_2.0.3 zeallot_0.1.0
[41] MASS_7.3-51.4 xml2_1.2.2 lubridate_1.7.4 assertthat_0.2.1 httr_1.4.1
[46] rstudioapi_0.10 R6_2.4.0 nlme_3.1-141 compiler_3.6.1
LS0tCnRpdGxlOiAiU2l0ZXMiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgY3NzOiBzdHlsZS5jc3MKICAgIHRoZW1lOiBwYXBlcgotLS0KCmBgYHtyIHNldHVwLCBtZXNzYWdlPUZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShjb3dwbG90KQpsaWJyYXJ5KG1hcHMpCmxpYnJhcnkoZ2dmb3JjZSkKbGlicmFyeSh2aXJpZGlzKQpgYGAKCmBgYHtyLCBtZXNzYWdlPUZBTFNFfQpzdHVkaWVzIDwtIHJlYWRfY3N2KCIuLi9kYXRhL3N0dWRpZXNfZ3NoZWV0LmNzdiIpCnNpdGVzIDwtIHJlYWRfY3N2KCIuLi9kYXRhL3NpdGVzX2dzaGVldC5jc3YiKQpgYGAKCmBgYHtyfQpkZiA8LSBzdHVkaWVzICU+JSAKICBncm91cF9ieShzaXRlKSAlPiUgCiAgc3VtbWFyaXNlKE5zdHVkaWVzID0gbl9kaXN0aW5jdChzdHVkeUlEKSkgJT4lIAogIGxlZnRfam9pbihzaXRlcykKYGBgCgpgYGB7cn0Kd29ybGQgPC0gbWFwKCJ3b3JsZCIsIHBsb3QgPSBGQUxTRSwgZmlsbCA9IFRSVUUpICU+JSBmb3J0aWZ5KCkKYGBgCgpgYGB7ciwgZmlnLndpZHRoPTIwLCBmaWcuaGVpZ2h0PTEwLCBjYWNoZT1UUlVFfQojIHNhbml0eSBjaGVjayB0aGF0IGNvb3JkaW5hdGVzIGFyZSBpbiB0aGUgcmlnaHQgY291bnRyeQojIHdpdGhpbiBhIGNvdW50cnksIGFsbCBYcyBzaG91bGQgYmUgdGhlIHNhbWUgY29sb3IKZ2dwbG90KGRmLCBhZXMoeCA9IGxvbmcsIHkgPSBsYXQpKSArCiAgZ2VvbV9wb2x5Z29uKGRhdGEgPSB3b3JsZCwgYWVzKGdyb3VwID0gZ3JvdXApLCBjb2wgPSAiYmxhY2siLCBmaWxsID0gImdyZXk5MCIpICsKICBnZW9tX3BvaW50KGFlcyhjb2wgPSBjb3VudHJ5KSwgc2l6ZSA9IDUsIHNoYXBlID0gNCwgc3Ryb2tlID0gMiwgYWxwaGEgPSAuOCkgKwogIGNvb3JkX2ZpeGVkKDEuMywgeWxpbSA9IGMoLTU1LCA4My41OTk2MSkpICsKICBzY2FsZV9jb2xvcl92aXJpZGlzX2QoKSArCiAgdGhlbWVfbWFwKCkgKwogIGd1aWRlcyhjb2wgPSAibm9uZSIpCmBgYAoKYGBge3J9Cmdnc2F2ZSgibWFwLnBkZiIsIHdpZHRoID0gMjAsIGhlaWdodCA9IDEwLCBzY2FsZSA9IDIpCmBgYAoKYGBge3IsIGZpZy53aWR0aD04LCBmaWcuaGVpZ2h0PTR9Cm0gPC0gZ2dwbG90KGRmLCBhZXMoeCA9IGxvbmcsIHkgPSBsYXQpKSArCiAgZ2VvbV9wb2x5Z29uKGRhdGEgPSB3b3JsZCwgYWVzKGdyb3VwID0gZ3JvdXApLCBmaWxsID0gImdyZXk5MCIpICsKICBnZW9tX3BvaW50KGFlcyhzaXplID0gTnN0dWRpZXMsIGZpbGwgPSBOc3R1ZGllcyksIHNoYXBlID0gMjEsIGFscGhhID0gLjgpICsKICBzY2FsZV9zaXplX2FyZWEoIk51bWJlciBvZlxuU3R1ZGllcyIsIG1heF9zaXplID0gMTUpICsKICBzY2FsZV9maWxsX3ZpcmlkaXNfYygiTnVtYmVyIG9mXG5TdHVkaWVzIikgKwogIHRoZW1lX21hcCgpICsKICBndWlkZXMoc2l6ZSA9ICJub25lIikKCmxlZ2VuZCA8LSBnZXRfbGVnZW5kKG0pCgpteCA8LSBtICsKICBhbm5vdGF0ZSgicmVjdCIsIHltaW4gPSBjKDI0LCAzMSwgMjQpLCB5bWF4ID0gYyg0NiwgNjEsIDUwKSwgeG1pbiA9IGMoMTI0LCAtMTIsIC0xMzApLCAKICAgICAgICAgICB4bWF4ID0gYygxNDYsIDMyLCAtNjQpLCBzaXplID0gLjUsIGNvbCA9ICJncmV5IiwgZmlsbCA9IE5BKSArIAogIGNvb3JkX2ZpeGVkKDEuMywgeWxpbSA9IGMoLTU1LCA4My41OTk2MSkpICsKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpCmBgYAoKIyMgWm9vbSBpbiBvbiBzZWN0aW9ucwoKYGBge3J9CiMgamFwYW4KbTEgPC0gbSArIAogIGdlb21fcG9seWdvbihkYXRhID0gd29ybGQsIGFlcyhncm91cCA9IGdyb3VwKSwgY29sID0gImJsYWNrIiwgZmlsbCA9ICJncmV5OTAiLCBsd2QgPSAuMikgKwogIGdlb21fcG9pbnQoYWVzKHNpemUgPSBOc3R1ZGllcywgZmlsbCA9IE5zdHVkaWVzKSwgc2hhcGUgPSAyMSwgYWxwaGEgPSAuOCkgKwogIGNvb3JkX2ZpeGVkKDEuMywgeWxpbSA9IGMoMjUsIDQ1KSwgeGxpbSA9IGMoMTI1LCAxNDUpKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArCiAgcGFuZWxfYm9yZGVyKGNvbG9yID0gImdyZXkiLCBzaXplID0gLjUpCgojIGV1cm9wZQptMiA8LSBtICsgCiAgZ2VvbV9wb2x5Z29uKGRhdGEgPSB3b3JsZCwgYWVzKGdyb3VwID0gZ3JvdXApLCBjb2wgPSAiYmxhY2siLCBmaWxsID0gImdyZXk5MCIsIGx3ZCA9IC4yKSArCiAgZ2VvbV9wb2ludChhZXMoc2l6ZSA9IE5zdHVkaWVzLCBmaWxsID0gTnN0dWRpZXMpLCBzaGFwZSA9IDIxLCBhbHBoYSA9IC44KSArCiAgY29vcmRfZml4ZWQoMS4zLCB5bGltID0gYygzMiwgNjApLCB4bGltID0gYygtMTAsIDMwKSkgKwogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKwogIHBhbmVsX2JvcmRlcihjb2xvciA9ICJncmV5Iiwgc2l6ZSA9IC41KQoKIyBjb250aWd1b3VzIHVzCnVzYSA9IG1hcCgic3RhdGUiLCBwbG90ID0gRkFMU0UsIGZpbGwgPSBUUlVFKSAlPiUgZm9ydGlmeSgpICMgInVzYSIKCm0zIDwtIG0gKyAKICBnZW9tX3BvbHlnb24oZGF0YSA9IHdvcmxkLCBhZXMoZ3JvdXAgPSBncm91cCksIGNvbCA9ICJibGFjayIsIGZpbGwgPSAiZ3JleTkwIiwgbHdkID0gLjIpICsKICBnZW9tX3BvbHlnb24oZGF0YSA9IHVzYSwgYWVzKGdyb3VwID0gZ3JvdXApLCBjb2wgPSAiYmxhY2siLCBmaWxsID0gImdyZXk5MCIsIGx3ZCA9IC4yKSArCiAgZ2VvbV9wb2ludChhZXMoc2l6ZSA9IE5zdHVkaWVzLCBmaWxsID0gTnN0dWRpZXMpLCBzaGFwZSA9IDIxLCBhbHBoYSA9IC44KSArCiAgY29vcmRfZml4ZWQoMS4zLCB5bGltID0gYygyNSwgNDkpLCB4bGltID0gYygtMTI3LCAtNjcpKSArCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArCiAgcGFuZWxfYm9yZGVyKGNvbG9yID0gImdyZXkiLCBzaXplID0gLjUpCmBgYAoKYGBge3IsIGZpZy53aWR0aD04LCBmaWcuaGVpZ2h0PTUuNSwgY2FjaGU9VFJVRX0KYm90dG9tX3JvdyA8LSBwbG90X2dyaWQobTMsIG0yLCBtMSwgbGVnZW5kLCBucm93ID0gMSwgcmVsX3dpZHRocyA9IGMoMiwgMS4xOCwgLjg1LCAuNSkpCnBsb3RfZ3JpZChteCwgYm90dG9tX3JvdywgbmNvbCA9IDEsIHJlbF9oZWlnaHRzID0gYygyLjQsIDEpKSArCiAgdGhlbWUocGxvdC5tYXJnaW4gPSB1bml0KGMoLjUsIC41LCAxLjUsIC41KSwgImNtIikpCmBgYAoKYGBge3J9Cmdnc2F2ZSgibWFwX2luc2V0cy5wZGYiLCB3aWR0aCA9IDgsIGhlaWdodCA9IDUuNSwgc2NhbGUgPSAyKQpgYGAKCgoqKioKCiMgU2Vzc2lvbiBJbmZvCgpgYGB7cn0Kc2Vzc2lvbkluZm8oKQpgYGAK